// 1790. [字符串正则表达式]合法mac地址
// https://oj.rnd.huawei.com/problems/1790/details 输入 0a-0a-0a-0a-0a-0a-0A
// 输出
// 1

#include <algorithm>
#include <regex>
#include <set>
using namespace std;

// 正则
int GetMacNum(string ins) {
  const int LenMac = 17;
  // 一个mac地址长度等于17
  if (ins.size() < LenMac) {
    return 0;
  }
  std::transform(ins.begin(), ins.end(), ins.begin(), ::tolower);
  set<string> validMacs;
  regex re("(((([a-f0-9]){2}:){5}|(([a-f0-9]){2}-){5})([a-f0-9]){2})");
  smatch baseMatch;
  for (int i = 0; i + LenMac <= ins.size(); ++i) {
    auto mac = ins.substr(i, LenMac);
    if (regex_match(mac, baseMatch, re)) {
      std::replace(mac.begin(), mac.end(), '-', ':');
      validMacs.insert(mac);
    }
  }
  return validMacs.size();
}
